//这是一个路由文件，被调用用来实现登陆和注册

const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');
const connection=require('./db.js');//连接数据库这个功能放在了db.js文件中
const router = express.Router();
// 解析请求体
router.use(bodyParser.json());





// 设置路由函数，调用方法http://127.0.0.1:3000/api/auth/login
/*附带一个JSON表单例如
	{  

        "username": "abc",  
  
        "password": "123"  
  
      }*/
router.post('/login', (req, res) => {
    const { username, password } = req.body;

    // 查询用户是否存在
    const query = `SELECT * FROM users WHERE username = ? AND password = ?`;
    
    connection.query(query, [username, password], (error, results, fields) => {
      if (error) throw error;

      if (results.length > 0) {
        // 登录成功
        res.status(200).json({ message: '登录成功' });
        //登录成功后返回一个JSON表单
        /*{
            "message": "登录成功"
        }*/
     
     
        } else {
          // 登录失败
          res.status(401).json({ message: '用户名或密码错误' });
      }
        //登录失败后返回一个JSON表单
        /*{
            "message": "用户名或密码错误"
        }*/
     

    });
});



// 设置路由，调用方法http://127.0.0.1:3000/api/auth/register
//附带一个JSON表单例如
/*{  

    "username": "abc",  

    "password": "123"  

  }*/
router.post('/register', (req, res) => {  
  const { username, password } = req.body;  
  // 验证输入  
  
  if (!username || !password) {  
  
        return res.status(400).json({ message: '用户名和密码不能为空' });  
  
    }  
    //注册失败后返回一个JSON表单
    /*{
        "message": "用户名或密码不能为空"
    }*/
     

      
  
    // 插入用户到数据库  
  
    const query = `INSERT INTO users (username, password) VALUES (?, ?)`;  
  
        
    connection.query(query, [username, password], (error, results, fields) => {  
  
        if (error) {  
  
            // 如果出现错误，可能是用户已存在或数据库问题  
  
            if (error.code === 'ER_DUP_ENTRY') {  
  
                return res.status(409).json({ message: '用户名已存在' });  
  
            }
            
            //注册失败后返回一个JSON表单
            /*{
                "message": "用户名或密码不能为空"
            }*/
  
            throw error; // 其他数据库错误  
        }  
  
        // 插入成功  
  
        res.status(201).json({ message: '注册成功' });  
        //登录成功后返回一个JSON表单
        /*{
            "message": "用户名或密码错误"
        }*/
    });  
  
  });  
  

// 设置路由，调用方法http://127.0.0.1:3000/api/auth/changepassword
// 附带一个JSON表单例如
/*{  
    "username": "abc",
    "oldPassword": "123",
    "newPassword": "456"
}*/
router.post('/changepassword', (req, res) => {  
    const { username, oldPassword, newPassword } = req.body;  
  
    // 验证输入  
    if (!username || !oldPassword || !newPassword) {  
      return res.status(400).json({ message: '用户名、旧密码和新密码不能为空' });  
    }  
  
    // 检查旧密码是否正确
    const checkQuery = `SELECT * FROM users WHERE username = ? AND password = ?`;
    connection.query(checkQuery, [username, oldPassword], (error, results, fields) => {
      if (error) throw error;
      
      if (results.length === 0) {
        return res.status(401).json({ message: '旧密码不正确' });
      }
  
      // 更新密码
      const updateQuery = `UPDATE users SET password = ? WHERE username = ?`;
      connection.query(updateQuery, [newPassword, username], (error, results, fields) => {
        if (error) throw error;
  
        res.status(200).json({ message: '密码修改成功' });
      });
    });
  });


 module.exports = router;


